﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AuctionSite.BL;
using AuctionSite.Entities;

namespace AuctionSite.Cadastros
{
    public partial class Produto : System.Web.UI.Page
    {
        public Usuario UsuarioLogado
        {
            get { return (Usuario)(Session["USUARIO"] ?? (Session["USUARIO"] = null)); }
        }

        public ProdutoFacade Facade
        {
            get { return (ProdutoFacade)(Session[ProdutoFacade.FACADE_SESSION_NAME] ?? (Session[ProdutoFacade.FACADE_SESSION_NAME] = new ProdutoFacade())); }
            set { Session[ProdutoFacade.FACADE_SESSION_NAME] = value; }
        }

        protected override void OnPreInit(EventArgs e)
        {
            if (UsuarioLogado == null)
            {
                Response.Write(
                        "<script type='text/javascript'>" +
                            "alert ('Usuário deve realizar o login!');" +
                            "window.location.href='../Login.aspx';" +
                         "</script>"
                ); 
            }
            if (!IsPostBack)
                ClearSession();

            base.OnPreInit(e);
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ddlCategoria.DataSource = Facade.ListCategoria;
                ddlCategoria.DataBind();
            }
        }

        private void ClearSession()
        {
            if (Session[ProdutoFacade.FACADE_SESSION_NAME] != null)
                Session.Remove(ProdutoFacade.FACADE_SESSION_NAME);
        }

        protected void ddlCategoria_SelectedIndexChanged(object sender, EventArgs e)
        {
            int categoriaId;
            if (int.TryParse(ddlCategoria.SelectedValue, out categoriaId))
            {
                ddlSubCategoria.DataSource = Facade.SearchSubCategoria(categoriaId);
                ddlSubCategoria.DataBind();
            }
        }

        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            string fupDiretorio = string.Empty;

            #region UPLOAD de FOTOS

            if (fupImage.PostedFile != null)
            {
                Guid nomeUnico = Guid.NewGuid();
                string extensao = Path.GetExtension(fupImage.FileName);
                fupImage.SaveAs(string.Concat(Server.MapPath("../imgs/"), nomeUnico, extensao));

                fupDiretorio = string.Concat("imgs\\", nomeUnico, extensao);
            }

            #endregion

            try
            {
                Facade.NovoProduto(
                    txtNome.Text,
                    txtDescricao.Text,
                    ddlCategoria.SelectedValue,
                    ddlSubCategoria.SelectedValue,
                    txtValor.Text,
                    fupDiretorio,
                    txtDataInicial.Text,
                    txtDataFinal.Text,
                    rbTipo.SelectedValue == "N" ? "N" : "R",
                    UsuarioLogado.Id.ToString()
                    );
            }
            catch (Exception ex)
            {
                Response.Write(
                    "<script type='text/javascript'>" +
                    "alert ('Erro no Cadastro! Tente Novamente em instantes! Mensagem: " + ex.Message + "');" +
                    "</script>"
                    );
            }

            Response.Write(
                "<script type='text/javascript'>" +
                "alert ('Cadastro Efetuado com Sucesso!');" +
                "</script>"
                );
        }
    }
}